package com.atguigu.bigdata.scala.chapter08

object Scala05_Match_1 {

    def main(args: Array[String]): Unit = {
        // TODO - 模式匹配 - 简化使用
        val list = List(
            (("河北", "鞋"),1), // ("河北",("鞋", 2))
            (("河南", "衣服"),2), // ("河南", ("衣服",4))
            (("华北", "电脑"),3) // ("华北", ("电脑",6))
        )

//        val newlist = list.map(
//            t => {
//                ( t._1._1, ( t._1._2, t._2 * 2 ) )
//            }
//        )
        // TODO 1. 对函数的参数进行模式匹配时，只能对一个参数进行匹配
        // TODO 2. 对函数的参数进行模式匹配时，如果直接匹配，会导致有歧义，无法确定小括号的含义
        //         为了能够明确含义，使用模式匹配，那么需要增加case关键字
        // TODO 3. 如果使用case关键字来进行模式匹配，那么小括号需要变为大括号
        val newlist = list.map {
            case ((prv, item), cnt) => {
                (prv, (item, cnt * 2))
            }
        }
        //println(newlist)

        val list1 = List(
            ("a", 1), ("a", 2), ("a" ,3)
        )

        println(list1.groupBy(_._1))

        val list2 = list1.groupBy {
            case (word, _) => {
                word
            }
        }
        println(list2)
    }
}
